from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.51job.com')
driver.implicitly_wait(10)

driver.find_element_by_css_selector('.more').click()
driver.find_element_by_css_selector(' input[id="kwdselectid"]').send_keys('python')

#点击加号选择城市
driver.find_element_by_id("work_position_input").click()
time.sleep(2)

#选择所有城市
# cityele = driver.find_elements_by_id('work_position_click_center_right')
cityEles = driver.find_elements_by_css_selector('#work_position_click_center_right td em')

#将所有的城市进行遍历
for ele in cityEles:
    cityname = ele.text
    #选择好的城市查看class属性
    sellected = ele.get_attribute('class')

    #如果城市名称不等于杭州，class属性为on，则点击该城市（不选择该城市）
    if cityname != '杭州':
        if sellected == 'on':
            ele.click()
    else:#或者，城市为杭州，class属性不等于‘on’，点击杭州，选中该城市（杭州）
        if sellected != 'on':
                ele.click()
#点击确认
driver.find_element_by_id('work_position_click_bottom_save').click()
#点击空白的地方
driver.find_element_by_css_selector('#kwdselectid:nth-child(1)').click()
time.sleep(2)
#点击职能类别加号
driver.find_element_by_css_selector('div span[id="funtype_click"]').click()
#点击计算机软件
driver.find_element_by_id('funtype_click_center_right_list_category_0100_0100').click()
#点击高级软件工程师
driver.find_element_by_id('funtype_click_center_right_list_sub_category_each_0100_0106').click()
#点击确认保存
driver.find_element_by_id('funtype_click_bottom_save').click()

#点击公司性质下拉框
driver.find_element_by_css_selector('#cottype_list [class="ef "]').click()

#选择外资（欧美）
driver.find_element_by_css_selector('#cottype_list>.ul span:nth-child(2)').click()

#点击工作年限按钮
driver.find_element_by_css_selector('#workyear_list input[class="ef "]').click()
#选择工作年限为1-3年
driver.find_element_by_css_selector('#workyear_list .ul span[data-value="02"]').click()
#点击搜索
driver.find_element_by_css_selector('span[class="p_but"]:nth-child(1)').click()

#获取所有公司岗位详细信息
jobs= driver.find_elements_by_css_selector('#resultList >div[class="el"]')
#将公司岗位信息进行遍历
for one in jobs:
    #根据span属性进行元素定位
    gangwei = one.find_elements_by_tag_name('span')
    #通过列表生产试得到岗位信息赋值给eles.text
    ele = [eles.text for eles in gangwei]
    print('|'.join(ele))

driver.quit()

